<template>
</template>

<script>
/**
 * ShiftClickEvent 点击事件
 *
 * 这是一个空的组件，用于判断用户是否按下了shift按键，用于封装数据多选功能。
 */
/* eslint-disable */
export default {
    name: "SeaShiftEvent"
    , props: {
        //shift 按下去的事件
        onkeydown: {type: Function, default: undefined},
        //shift 松开的事件
        onkeyup: {type: Function, default: undefined}
    }
    , data() {
        return {
            // 是否处于按住的状态
            pressing: false
        }
    }
    , created: function () {
        // 添加点击事件
        document.onkeydown  = this.down;
        document.onkeyup   = this.up;
    }
    , methods: {
        /**
         * 是否处于按住Shift事件的状态
         */
        isPressing: function () {
            return this.pressing;
        },
        /**
         * shift按下事件
         * @param event
         */
        down: function (event) {
            let e = event || window.event || arguments.callee.caller.arguments[0];
            if (this.pressing === false && e && e.keyCode === 16) {
                event.preventDefault();
                this.pressing = true;
                if (this.onkeydown !== undefined) {
                    this.onkeydown();
                }
            }
        },
        /**
         * shift松开事件
         * @param event
         */
        up: function (event) {
            let e = event || window.event || arguments.callee.caller.arguments[0];
            if (e && e.keyCode === 16) {
                event.preventDefault();
                this.pressing = false;
                if (this.onkeyup !== undefined) {
                    this.onkeyup();
                }
            }
        }
    }
    , destroyed() {
        // 移除点击事件
        document.onkeydown = undefined;
        document.onkeyup = undefined;
    }
}
</script>
